/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatosAvanzado;

import AccesoDatosSimple.cProveedor;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import sifact.conexion.cConexion;

/**
 *
 * @author Cyber Huevadictos
 */
public class AD_Proveedor extends cConexion {
    //Metodo de Insercion

    public static Exception Insertar(cProveedor obj) throws Exception {
        Exception band;
        CallableStatement ps;
        Connection conector = estado();
        try {
            //preparar la llamada al procedimiento almacenado
            ps = conector.prepareCall("{call public.sp_insert_proveedor(?,?,?,?,?,?,?,?)}");
            //configurar parametros
//            ps.setInt(1,obj.getNumIDCliente());
            ps.setString(1, obj.getTxtNomEmpresa());
            ps.setString(2, obj.getTxtNomContacto());
            ps.setString(3, obj.getTxtCargoContacto());
            ps.setString(4, obj.getTxtDireccion());
            ps.setString(5, obj.getTxtCiudad());
            ps.setString(6, obj.getTxtNumTlfno1());
            ps.setString(7, obj.getTxtNumTlfno2());
            ps.setString(8, obj.getTxtNumTlfno3());
            //ejecutar comando
            ps.execute();
            band = null;
            ps.close();
        } catch (Exception ex) {
            band = ex;
        }

        return band;
    }
    //Metodo de Actualizacion

    public static Exception Actualizar(cProveedor obj) throws Exception {
        Exception band;
        CallableStatement ps;
        Connection conector = estado();
        try {
            ps = conector.prepareCall("{call public.sp_update_proveedor(?,?,?,?,?,?,?,?)}");
            ps.setString(1, obj.getTxtNomEmpresa());
            ps.setString(2, obj.getTxtNomContacto());
            ps.setString(3, obj.getTxtCargoContacto());
            ps.setString(4, obj.getTxtDireccion());
            ps.setString(5, obj.getTxtCiudad());
            ps.setString(6, obj.getTxtNumTlfno1());
            ps.setString(7, obj.getTxtNumTlfno2());
            ps.setString(8, obj.getTxtNumTlfno3());
            //ejecutar comando
            ps.execute();
            band = null;
            ps.close();
        } catch (Exception ex) {
            band = ex;
        }
        return band;
    }
//Metodo de Eliminacion

    public static Exception Eliminar(String cadena) throws Exception {
        Exception band;
        CallableStatement ps;
        Connection conector = estado();
        try {
            ps = conector.prepareCall("{call public.sp_delete_proveedor(?)}");
            ps.setString(1, cadena);
            ps.execute();
            band = null;
            ps.close();
        } catch (Exception ex) {
            band = ex;
        }
        return band;
    }

    //Metodo para extraer el codigo del siguiente
    public static int GetId() throws Exception {
        int id = 0;
        try {
            Connection cn = estado();
            CallableStatement ps = cn.prepareCall("{call public.sp_get_id_proveedor(?)}");
            ps.registerOutParameter(1, java.sql.Types.INTEGER);
            ps.execute();
            id = ps.getInt(1);
            ps.close();
            cn.close();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }
        return id;

    }
    //Metodo de Busqueda por Empresa

    public static String[] BuscarEmpresa(String cadena) throws Exception {
        String[] registro = new String[12];//almacena las tuplas
        Statement cs;
        Connection cn = estado();

        try {
            if (cn != null) {

                cs = cn.createStatement();
                ResultSet rs = cs.executeQuery("select * from public.\"Proveedores\" where \"txtNomEmpresa\" = '" + cadena + "'");

                while (rs.next()) {
                    registro[0] = (rs.getString("numIDProveedor"));
                    registro[1] = (rs.getString("txtNomEmpresa"));
                    registro[2] = (rs.getString("txtNomContacto"));
                    registro[3] = (rs.getString("txtCargoContacto"));
                    registro[4] = (rs.getString("txtDireccion"));
                    registro[5] = (rs.getString("txtCiudad"));
                    registro[6] = (rs.getString("txtNumTlfno1"));
                    registro[7] = (rs.getString("txtNumTlfno2"));
                    registro[8] = (rs.getString("txtNumTlfno3"));
                }
                rs.close();
                cs.close();
                cn.close();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }

        return registro;
    }
    //Metodo de Busqueda por Codigo

    public static String[] BuscarCodigo(String codigo) throws Exception {
        String[] registro = new String[10];//almacena las tuplas
        Statement cs;
        Connection cn = estado();

        try {
            if (cn != null) {

                cs = cn.createStatement();
                ResultSet rs = cs.executeQuery("select * from public.\"Proveedores\" where \"numIDProveedor\" = '" + codigo + "'");

                while (rs.next()) {
                    registro[0] = (rs.getString("numIDProveedor"));
                    registro[1] = (rs.getString("txtNomEmpresa"));
                    registro[2] = (rs.getString("txtNomContacto"));
                    registro[3] = (rs.getString("txtCargoContacto"));
                    registro[4] = (rs.getString("txtDireccion"));
                    registro[5] = (rs.getString("txtCiudad"));
                    registro[6] = (rs.getString("txtNumTlfno1"));
                    registro[7] = (rs.getString("txtNumTlfno2"));
                    registro[8] = (rs.getString("txtNumTlfno3"));
                }
                rs.close();
                cs.close();
                cn.close();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }

        return registro;
    }
//Lleno el ComboBox para los Proveedores

    public JComboBox cbmFullProveedor(JComboBox cmb) throws Exception {

        Statement cs = null;
        Connection cn = cConexion.estado();

        String cad = "";

        try {
            if (cn != null) {
                cs = cn.createStatement();

                ResultSet rs = cs.executeQuery("select \"txtNomEmpresa\" from public.\"Proveedores\" order by \"txtNomEmpresa\";");
                while (rs.next()) {
                    cad = rs.getString("txtNomEmpresa");
                    cmb.addItem(cad);
                }
                rs.close();
            }
            cmb.addItem("Otra");
            cs.close();
            cn.close();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }
        return cmb;
    }
    //Metodo para buscar el codigo de una empresa

    public static int GetCodigo(String cadena) throws Exception {
        int numcodigo = 0;
        Statement cs;
        Connection cn = estado();

        try {
            if (cn != null) {

                cs = cn.createStatement();
                ResultSet rs = cs.executeQuery("select \"numIDProveedor\" from public.\"Proveedores\" where \"txtNomEmpresa\" = '" + cadena + "'");

                while (rs.next()) {
                    numcodigo = (rs.getInt("numIDProveedor"));
                }
                rs.close();
                cs.close();
                cn.close();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se produjo el siguiente error:\n" + ex, "Error", JOptionPane.ERROR_MESSAGE);
        }

        return numcodigo;
    }
}
